์น์ฌ์ดํธ ์ฑ๋ฅ ํฅ์์ ์ํ CSS preload link ์์ฑ์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์ด๋: ์ด์ , ๊ตฌํ ์ ๋ต, ์ผ๋ฐ์ ์ธ ํจ์ ๋ฐ ๊ณ ๊ธ ๊ธฐ์ ์ ๋ค๋ฃน๋๋ค.
์๋ ํฅ์: ์ต์ ํ๋ ์น ์ฑ๋ฅ์ ์ํ CSS Preload ๋ง์คํฐํ๊ธฐ
๋์์์ด ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฑ๋ฅ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ฌ์ฉ์๋ ๋งค์ฐ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ๊ณผ ์ํํ ์ํธ ์์ฉ์ ๊ธฐ๋ํฉ๋๋ค. ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฐ ์น์ฌ์ดํธ๋ ์ดํ๋ฅ ์ฆ๊ฐ, ์ฐธ์ฌ๋ ๊ฐ์ ๋ฐ ๊ถ๊ทน์ ์ผ๋ก ์์ต ์์ค๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์น ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๊ธฐ์ ์ค ํ๋๋ ๋ฆฌ์์ค ํ๋ฆฌ๋ก๋ฉ์ด๋ฉฐ, <link rel="preload"> ์์ฑ์ ํต์ฌ ๋๊ตฌ์
๋๋ค.
CSS Preload๋ ๋ฌด์์ธ๊ฐ?
CSS preload๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง ๋ก๋ฉ ์ค ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ (๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ๊ฒฌ๋๊ธฐ *์ ์*) ๋ฆฌ์์ค (์ด ๊ฒฝ์ฐ CSS ํ์ผ)๋ฅผ ๋ค์ด๋ก๋ํ๋๋ก ์ง์ํ๋ ๋ธ๋ผ์ฐ์ ํํธ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ํ ๋ CSS ํ์ผ์ ์ฆ์ ์ฌ์ฉํ ์ ์๊ฒ ๋์ด ํ์ด์ง ๋ ๋๋ง ์ง์ฐ์ ์ค์ด๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์๊ฐํ์ญ์์ค. ๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ CSS ํ์ผ์ ๋ํ <link> ํ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ *๋ค์* ๋ค์ด๋ก๋๋ฅผ ์์ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๋ธ๋ผ์ฐ์ ์ ์ฆ์ CSS ํ์ผ์ ๊ฐ์ ธ์ค๋๋ก ์ฌ์ ์ ์๋ฆฌ๋ ๊ฒ์
๋๋ค. ์ด๋ ํ์ด์ง์ ์ด๊ธฐ ๋ ๋๋ง์ ํ์์ ์ธ ์ค์ํ CSS์ ํนํ ์ ์ฉํฉ๋๋ค.
CSS Preload๊ฐ ์ ์ค์ํ๊ฐ?
CSS๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ค์ํ ์ด์ ์ด ์์ต๋๋ค.
- ๊ฐ์ ๋ ์ธ์ง ์ฑ๋ฅ: ์ค์ํ CSS๋ฅผ ๋ ์ผ์ฐ ๋ก๋ํจ์ผ๋ก์จ ๋ธ๋ผ์ฐ์ ๋ ํ์ด์ง ์ฝํ ์ธ ๋ฅผ ๋ ๋นจ๋ฆฌ ๋ ๋๋งํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ์ด๋ผ๋ ์ธ์์ ์ค ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์ ์ฐธ์ฌ์ ๋ง์กฑ๋๋ฅผ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- FCP(First Contentful Paint) ๋ฐ LCP(Largest Contentful Paint) ๊ฐ์: ์ด๋ Google PageSpeed Insights์ ๊ฐ์ ๋๊ตฌ์์ ์ธก์ ํ๋ ์ฃผ์ ์ฑ๋ฅ ์งํ์ ๋๋ค. CSS๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ฉด ์ด๊ธฐ ์ฝํ ์ธ ์ ํ์ด์ง์์ ๊ฐ์ฅ ํฐ ๋ณด์ด๋ ์์์ ๋ ๋๋ง ์ง์ฐ์ ์ต์ํํ์ฌ ์ด๋ฌํ ์งํ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ฌ๊ธฐ์ ๋ ๋์ ์ ์๋ฅผ ์ป์ผ๋ฉด ๊ฒ์ ์์ง ์์์ ์ฌ์ฉ์ ๊ฒฝํ์ด ์ง์ ์ ์ผ๋ก ํฅ์๋ฉ๋๋ค.
- FOUC(Flash of Unstyled Content) ์ ๊ฑฐ: FOUC๋ CSS๊ฐ ๋ก๋๋๊ธฐ ์ ์ ๋ธ๋ผ์ฐ์ ๊ฐ HTML ์ฝํ ์ธ ๋ฅผ ๋ ๋๋งํ ๋ ๋ฐ์ํ์ฌ ํ์ด์ง๊ฐ ์คํ์ผ ์์ด ํ์๋๋ ์งง์ ๊ธฐ๊ฐ์ด ๋ฐ์ํฉ๋๋ค. CSS๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ฉด ์ฝํ ์ธ ๊ฐ ๋ ๋๋ง๋๊ธฐ ์ ์ ์คํ์ผ์ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฌ FOUC๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ๋ ๋์ ๋ฆฌ์์ค ์ฐ์ ์์ ์ง์ : ๋ฏธ๋ฆฌ ๋ก๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ๊ฐ์ฅ ์ค์ํ ๋ฆฌ์์ค๋ฅผ ๋ช ์์ ์ผ๋ก ์๋ ค ๋ ๋์ ์ฐ์ ์์๋ก ๋ค์ด๋ก๋๋๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ ์ด๊ธฐ ๋ ๋๋ง์ ํ์ํ ์ค์ํ CSS์ ์ฐ์ ์์๋ฅผ ์ง์ ํ ์ ์์ผ๋ฏ๋ก ์ฌ๋ฌ CSS ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ํนํ ์ ์ฉํฉ๋๋ค.
- "Critical CSS"์ ํ์ ์ ๊ธ ํด์ : ๋ฏธ๋ฆฌ ๋ก๋๋ ๋ณด์ด๋ ์ฝํ ์ธ ์ ํ์ํ CSS๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ์ฝ์ ํ๊ณ ๋๋จธ์ง๋ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ "Critical CSS" ์ ๋ต์ ํต์ฌ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ณด์ด๋ ๋ถ๋ถ์ ์ฆ๊ฐ์ ์ธ ๋ ๋๋ง๊ณผ ๋๋จธ์ง ์คํ์ผ์ ํจ์จ์ ์ธ ๋ก๋ฉ์ด๋ผ๋ ๋ ๊ฐ์ง ์ฅ์ ์ ๋ชจ๋ ์ป์ ์ ์์ต๋๋ค.
CSS Preload๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ
CSS preload ๊ตฌํ์ ๊ฐ๋จํฉ๋๋ค. HTML ๋ฌธ์์ <head> ์น์
์์ rel="preload" ์์ฑ์ด ์๋ <link> ํ๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ํ ๋ฏธ๋ฆฌ ๋ก๋๋๋ ๋ฆฌ์์ค๊ฐ CSS ์คํ์ผ์ํธ์์ ๋ํ๋ด๊ธฐ ์ํด as="style" ์์ฑ์ ์ง์ ํด์ผ ํฉ๋๋ค.
๋ค์์ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ์ ๋๋ค.
<link rel="preload" href="style.css" as="style">
์:
์น์ฌ์ดํธ ์คํ์ผ์ด ํฌํจ๋ main.css๋ผ๋ CSS ํ์ผ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ํ์ผ์ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ ค๋ฉด ๋ค์ ์ฝ๋๋ฅผ HTML ๋ฌธ์์ <head> ์น์
์ ์ถ๊ฐํฉ๋๋ค.
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>๋ด ์น์ฌ์ดํธ</title>
<link rel="preload" href="main.css" as="style">
<link rel="stylesheet" href="main.css"> <!-- ์ผ๋ฐ ์คํ์ผ์ํธ ๋งํฌ -->
</head>
์ค์ ๊ณ ๋ ค ์ฌํญ:
as์์ฑ:as์์ฑ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ฏธ๋ฆฌ ๋ก๋๋๋ ๋ฆฌ์์ค ์ ํ์ ๋ธ๋ผ์ฐ์ ์ ์๋ ค์ค๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ด๋ก๋ ์ฐ์ ์์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ํ์ง ๋ชปํ ์ ์์ผ๋ฉฐ ๋ฏธ๋ฆฌ ๋ก๋ ํํธ๊ฐ ๋ฌด์๋ ์ ์์ต๋๋ค. ์ ํจํ ๊ฐ์๋style,script,font,image,fetch๋ฑ์ด ์์ต๋๋ค. ์ต์ ์ ์ฑ๋ฅ์ ์ํด์๋ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.- ์ผ๋ฐ ์คํ์ผ์ํธ ๋งํฌ: CSS ํ์ผ์ ๋ํ ํ์ค
<link rel="stylesheet">ํ๊ทธ๋ ํฌํจํด์ผ ํฉ๋๋ค. ๋ฏธ๋ฆฌ ๋ก๋ ํ๊ทธ๋ ๋ธ๋ผ์ฐ์ ์ ํ์ผ์ ๋ ์ผ์ฐ ๋ค์ด๋ก๋ํ๋ผ๊ณ ์๋ ค์ค ๋ฟ ์ค์ ๋ก ์คํ์ผ์ ์ ์ฉํ์ง๋ ์์ต๋๋ค. ํ์ผ์ด ๋ค์ด๋ก๋๋๋ฉด ์คํ์ผ์ ์ ์ฉํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ฆฌ๋ ค๋ฉด ํ์ค ์คํ์ผ์ํธ ๋งํฌ๊ฐ ์ฌ์ ํ ํ์ํฉ๋๋ค. - ๋ฐฐ์น:
<head>์น์ ์์ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ฏธ๋ฆฌ ๋ก๋ ๋งํฌ๋ฅผ ๋ฐฐ์นํ์ฌ ํจ๊ณผ๋ฅผ ๊ทน๋ํํ์ญ์์ค. ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฏธ๋ฆฌ ๋ก๋ ํํธ๋ฅผ ๋ ์ผ์ฐ ๋ฐ๊ฒฌํ ์๋ก ๋ฆฌ์์ค ๋ค์ด๋ก๋๋ฅผ ๋ ๋นจ๋ฆฌ ์์ํ ์ ์์ต๋๋ค.
๊ณ ๊ธ Preload ๊ธฐ์
CSS preload์ ๊ธฐ๋ณธ ๊ตฌํ์ ๊ฐ๋จํ์ง๋ง ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๋์ฑ ์ต์ ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ๊ณ ๊ธ ๊ธฐ์ ์ด ์์ต๋๋ค.
1. ๋ฏธ๋์ด ์ฟผ๋ฆฌ
media ์์ฑ๊ณผ ํจ๊ป ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ํ๋ฉด ํฌ๊ธฐ ๋๋ ์ฅ์น์๋ง ํ์ํ CSS ํ์ผ์ ๋ฏธ๋ฆฌ ๋ก๋ํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ๋ชจ๋ฐ์ผ ์ฅ์น์์ ๋ค์ด๋ก๋๋๋ ๋ถํ์ํ CSS ์์ ์ค์ด๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
<link rel="preload" href="mobile.css" as="style" media="(max-width: 768px)">
์ด ์์์๋ mobile.css ํ์ผ์ด ํ๋ฉด ๋๋น๊ฐ 768ํฝ์
์ดํ์ธ ์ฅ์น์์๋ง ๋ฏธ๋ฆฌ ๋ก๋๋ฉ๋๋ค.
2. JavaScript๋ฅผ ์ฌ์ฉํ ์กฐ๊ฑด๋ถ Preload
JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์์ด์ ํธ ๋๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฌธ์์ <head> ์น์
์ ๋ฏธ๋ฆฌ ๋ก๋ ๋งํฌ๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ณ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฆฌ์์ค๋ฅผ ๋ ์ง๋ฅ์ ์ผ๋ก ๋ฏธ๋ฆฌ ๋ก๋ํ๊ณ ํน์ ์ฌ์ฉ์์ ๋ง๊ฒ ๋ฏธ๋ฆฌ ๋ก๋ ์ ๋ต์ ์กฐ์ ํ ์ ์์ต๋๋ค.
<script>
if (/* ์ผ๋ถ ์กฐ๊ฑด */) {
var link = document.createElement('link');
link.rel = 'preload';
link.href = 'conditional.css';
link.as = 'style';
document.head.appendChild(link);
}
</script>
์ด ์ ๊ทผ ๋ฐฉ์์ ํน์ ๋ธ๋ผ์ฐ์ ์์๋ง ํ์ํ ํด๋ฆฌํ ๋๋ ๊ธฐํ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
3. ๊ธ๊ผด Preload
๊ธ๊ผด์ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ฉด ํนํ ์ฌ์ฉ์ ์ง์ ๊ธ๊ผด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์น์ฌ์ดํธ์ ์ธ์ง ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๊ธ๊ผด ๋ก๋ฉ์ ์ข ์ข ๋ณ๋ชฉ ํ์์ด ๋์ด "๋ณด์ด์ง ์๋ ํ ์คํธ ๊น๋ฐ์" (FOIT) ๋๋ "์คํ์ผ์ด ์ง์ ๋์ง ์์ ํ ์คํธ ๊น๋ฐ์" (FOUT)์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ธ๊ผด์ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ํ ๋ ๊ธ๊ผด์ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฌ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
<link rel="preload" href="fonts/myfont.woff2" as="font" type="font/woff2" crossorigin>
์ค์: ๊ธ๊ผด์ ๋ฏธ๋ฆฌ ๋ก๋ํ ๋ ๊ธ๊ผด์ด ๋ค๋ฅธ ์ถ์ฒ (์: CDN)์์ ์ ๊ณต๋๋ ๊ฒฝ์ฐ crossorigin ์์ฑ์ ํฌํจํด์ผ ํฉ๋๋ค. ์ด๋ ๋ณด์์์ ์ด์ ๋ก ํ์ํฉ๋๋ค.
4. JavaScript ๋ชจ๋์ ์ํ Modulepreload
JavaScript ๋ชจ๋์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ rel ์์ฑ์ ๋ํ modulepreload ๊ฐ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ JavaScript ๋ชจ๋์ ๋ฏธ๋ฆฌ ๋ก๋ํ๊ณ *์ข
์์ฑ*์ ์ดํดํ๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ํ ๋ชจ๋ ๋ชจ๋์ ๋ณ๋ ฌ๋ก ๊ฐ์ ธ์ค๊ธฐ ์์ํ ์ ์์ผ๋ฏ๋ก ๊ธฐ๋ณธ ๋ชจ๋ ํ์ผ๋ง ๋ฏธ๋ฆฌ ๋ก๋ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ํจ์จ์ ์
๋๋ค.
<link rel="modulepreload" href="my-module.js" as="script">
ํผํด์ผ ํ ์ผ๋ฐ์ ์ธ ํจ์
CSS preload๋ ๊ฐ๋ ฅํ ๊ธฐ์ ์ด์ง๋ง ์ด์ ์ ๋ฌดํจํํ๊ฑฐ๋ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ์ ํดํ ์ ์๋ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ํจ์ ์ ์๊ณ ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๋ชจ๋ ๊ฒ์ ๋ฏธ๋ฆฌ ๋ก๋: ๋๋ฌด ๋ง์ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ฉด ์ค์ ๋ก ์น์ฌ์ดํธ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์๋ ์ ํ๋ ์์ ๋ณ๋ ฌ ์ฐ๊ฒฐ์ด ์์ผ๋ฉฐ ์ค์ํ์ง ์์ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ฉด ์ค์ํ ๋ฆฌ์์ค ๋ก๋ฉ๊ณผ ๊ฒฝ์ํ ์ ์์ต๋๋ค. ํ์ด์ง์ ์ด๊ธฐ ๋ ๋๋ง์ ํ์์ ์ธ ๋ฆฌ์์ค๋ง ๋ฏธ๋ฆฌ ๋ก๋ํ๋ ๋ฐ ์ง์คํ์ญ์์ค.
as์์ฑ์ ์ง์ ํ์ง ์์: ์์ ์ธ๊ธํ๋ฏ์ดas์์ฑ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ด๋ก๋ ์ฐ์ ์์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ํ์ง ๋ชปํ ์ ์์ผ๋ฉฐ ๋ฏธ๋ฆฌ ๋ก๋ ํํธ๊ฐ ๋ฌด์๋ ์ ์์ต๋๋ค. ๋ฏธ๋ฆฌ ๋ก๋๋๋ ๋ฆฌ์์ค์ ๋ํด ํญ์ ์ฌ๋ฐ๋ฅธas๊ฐ์ ์ง์ ํ์ญ์์ค.- ์ด๋ฏธ ์บ์๋ ๋ฆฌ์์ค ๋ฏธ๋ฆฌ ๋ก๋: ์ด๋ฏธ ์บ์๋ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ ๊ฒ์ ๋ถํ์ํ๋ฉฐ ๋์ญํญ์ ๋ญ๋นํ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ ์บ์ ์ ์ฑ ์ ํ์ธํ์ฌ ์บ์์์ ์ด๋ฏธ ์ ๊ณต๋๊ณ ์๋ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ์ง ์๋๋ก ํ์ญ์์ค.
- ๋ฆฌ์์ค์ ์๋ชป๋ ๊ฒฝ๋ก:
href์์ฑ์ด CSS ํ์ผ์ ์ฌ๋ฐ๋ฅธ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋์ง ํ์ธํ์ญ์์ค. ์คํ๋ ์๋ชป๋ ๊ฒฝ๋ก๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค๋ฅผ ์ฐพ๊ณ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. - ํ ์คํธํ์ง ์์: ๋ฏธ๋ฆฌ ๋ก๋ ๊ตฌํ์ด ์ค์ ๋ก ์น์ฌ์ดํธ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํด ํญ์ ์ฒ ์ ํ ํ ์คํธํ์ญ์์ค. Google PageSpeed Insights, WebPageTest ๋๋ Chrome DevTools์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ ๋ก๋ฉ ์๊ฐ๊ณผ ์ฑ๋ฅ ์งํ์ ๋ํ ๋ฏธ๋ฆฌ ๋ก๋์ ์ํฅ์ ์ธก์ ํ์ญ์์ค.
CSS Preload์ ์ํฅ ์ธก์
CSS preload ๊ตฌํ์ด ์ค์ ๋ก ์น์ฌ์ดํธ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์ํฅ์ ์ธก์ ํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ๋ฏธ๋ฆฌ ๋ก๋์ ์ํฅ์ ์ธก์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ๋๊ตฌ์ ๊ธฐ์ ์ด ์์ต๋๋ค.
- Google PageSpeed Insights: ์ด ๋๊ตฌ๋ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๋ํ ๊ท์คํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๊ณ ๊ฐ์ ๊ธฐํ๋ฅผ ์๋ณํฉ๋๋ค. ๋ํ CSS๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ฉด ์ง์ ์ ์ธ ์ํฅ์ ๋ฐ์ ์ ์๋ FCP ๋ฐ LCP์ ๊ฐ์ ์ฃผ์ ์ฑ๋ฅ ์งํ๋ฅผ ์ธก์ ํฉ๋๋ค.
- WebPageTest: ์ด ๊ฐ๋ ฅํ ์จ๋ผ์ธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ํ ์์น์ ๋ธ๋ผ์ฐ์ ์์ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ํ ์คํธํ ์ ์์ต๋๋ค. ๊ฐ๋ณ ๋ฆฌ์์ค์ ๋ก๋ฉ ์๊ฐ์ ๋ณด์ฌ์ฃผ๋ ์์ธํ ์ํฐํด ์ฐจํธ๋ฅผ ์ ๊ณตํ์ฌ ๋ฏธ๋ฆฌ ๋ก๋๊ฐ ๋ก๋ฉ ์์์ ๋ฏธ์น๋ ์ํฅ์ ํ์ธํ ์ ์์ต๋๋ค.
- Chrome DevTools: Chrome DevTools๋ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๋ถ์ํ๊ธฐ ์ํ ๋ค์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋คํธ์ํฌ ํจ๋์ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ๋ฆฌ์์ค์ ๋ก๋ฉ ์๊ฐ์ ํ์ธํ๊ณ ์ฑ๋ฅ ํจ๋์ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ ๋ ๋๋ง ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ ์ ์์ต๋๋ค.
- RUM(์ค์ ์ฌ์ฉ์ ๋ชจ๋ํฐ๋ง): RUM์ ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ๋ ์ค์ ์ฌ์ฉ์๋ก๋ถํฐ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด๋ ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด๊ณผ ๋ค์ํ ์ฅ์น์์ ์น์ฌ์ดํธ๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ์ํ๋๋์ง์ ๋ํ ๊ท์คํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. Google Analytics, New Relic ๋ฐ Datadog์ ๊ฐ์ ๋ง์ RUM ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ค์ ์์ ๋ฐ ์ฌ๋ก ์ฐ๊ตฌ
CSS preload๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ ์ค์ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ์ ์ ์๊ฑฐ๋ ์น์ฌ์ดํธ
์ ์ ์๊ฑฐ๋ ์น์ฌ์ดํธ๋ CSS preload๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ ๋ชฉ๋ก ๋ฐ ์ ํ ์ธ๋ถ ์ ๋ณด ํ์ด์ง์ ํ์ํ ์ค์ํ CSS๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ ์ ์์ต๋๋ค. ์ด๋ ์น์ฌ์ดํธ์ ์ธ์ง ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํค๊ณ ์ดํ๋ฅ ์ ์ค์ผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ ๋ฝ์ ๋ณธ์ฌ๋ฅผ ๋ ๋๊ท๋ชจ ์จ๋ผ์ธ ์๋งค์ ์ฒด๋ ์ ํ ํ์ด์ง์ CSS preload๋ฅผ ๊ตฌํํ ํ ์ดํ๋ฅ ์ด 15% ๊ฐ์ํ์ต๋๋ค.
2. ๋ด์ค ์น์ฌ์ดํธ
๋ด์ค ์น์ฌ์ดํธ๋ CSS preload๋ฅผ ์ฌ์ฉํ์ฌ ํค๋๋ผ์ธ๊ณผ ๊ธฐ์ฌ ์ฝํ ์ธ ์ ํ์ํ CSS๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋๋ฆฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ์์๋ ๊ธฐ์ฌ ์ฝํ ์ธ ๊ฐ ๋น ๋ฅด๊ฒ ํ์๋๋๋ก ํ ์ ์์ต๋๋ค. ์์์์ ๋ณธ์ฌ๋ฅผ ๋ ๋ด์ค ์กฐ์ง์ ๊ธฐ์ฌ ํ์ด์ง์ CSS preload๋ฅผ ๊ตฌํํ ํ FCP๊ฐ 10% ํฅ์๋์์ต๋๋ค.
3. ๋ธ๋ก๊ทธ
๋ธ๋ก๊ทธ๋ CSS preload๋ฅผ ์ฌ์ฉํ์ฌ ์ฃผ์ ์ฝํ ์ธ ์์ญ ๋ฐ ์ฌ์ด๋๋ฐ์ ํ์ํ CSS๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ณ ๋ ์๊ฐ ํ์ด์ง์ ๋ ์ค๋ ๋จธ๋ฌผ๋๋ก ์ฅ๋ คํ ์ ์์ต๋๋ค. ๋ถ๋ฏธ์ ๊ธฐ์ ๋ธ๋ก๊ทธ๋ CSS preload๋ฅผ ๊ตฌํํ๊ณ ํ์ด์ง์์ ์๊ฐ (time on page)์ด 20% ์ฆ๊ฐํ ๊ฒ์ ๊ด์ฐฐํ์ต๋๋ค.
CSS Preload ๋ฐ ์น ์ฑ๋ฅ์ ๋ฏธ๋
CSS preload๋ ์น ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ์ ์ฉํ ๊ธฐ์ ์ด๋ฉฐ ์น์ฌ์ดํธ๊ฐ ์ ์ ๋ ๋ณต์กํด์ง๊ณ ์ฌ์ฉ์๊ฐ ๋ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ์ ์๊ตฌํจ์ ๋ฐ๋ผ ๋ฏธ๋์๋ ๋์ฑ ์ค์ํด์ง ๊ฒ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ๊ณ์ ์งํํ๊ณ ์๋ก์ด ์ฑ๋ฅ ๊ธฐ๋ฅ์ ๊ตฌํํจ์ ๋ฐ๋ผ CSS preload๋ ํ๋ฐํธ์๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ํต์ฌ ๋๊ตฌ๋ก ๋จ์ ๊ฒ์ ๋๋ค.
๋ํ HTTP/3 ๋ฐ QUIC์ ๊ฐ์ ๊ธฐ์ ์ ์ฑํ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๋ฏธ๋ฆฌ ๋ก๋์ ์ด์ ์ด ๋์ฑ ํฅ์๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ํ๋กํ ์ฝ์ ๊ฐ์ ๋ ๋ฉํฐํ๋ ์ฑ๊ณผ ๊ฐ์๋ ๋๊ธฐ ์๊ฐ์ ์ ๊ณตํ์ฌ ํจ๊ณผ์ ์ธ ๋ฆฌ์์ค ๋ฏธ๋ฆฌ ๋ก๋ ์ ๋ต๊ณผ ๊ฒฐํฉํ๋ฉด ๋ก๋ฉ ์๊ฐ์ด ํจ์ฌ ๋ ๋นจ๋ผ์ง ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ด ๋๋ฆฌ ๋ณด๊ธ๋จ์ ๋ฐ๋ผ CSS preload๋ฅผ ์ดํดํ๊ณ ๊ตฌํํ๋ ๊ฒ์ ์ค์์ฑ์ ๊ณ์ ์ปค์ง ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก
CSS preload๋ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ ๊ฐ๋จํ๋ฉด์๋ ๊ฐ๋ ฅํ ๊ธฐ์ ์
๋๋ค. ๋ฆฌ์์ค ๋ฏธ๋ฆฌ ๋ก๋์ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํจ์ผ๋ก์จ ๋ ๋น ๋ฅด๊ณ , ๋ ๋งค๋ ฅ์ ์ด๋ฉฐ, ๋ ์ฌ์ฉ์ ์นํ์ ์ธ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ค์ํ ๋ฆฌ์์ค ๋ฏธ๋ฆฌ ๋ก๋์ ์ง์คํ๊ณ as ์์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ณ ์ผ๋ฐ์ ์ธ ํจ์ ์ ํผํ๊ณ ํญ์ ๊ตฌํ์ ์ํฅ์ ์ธก์ ํ์ญ์์ค. ์ด๋ฌํ ์ง์นจ์ ๋ฐ๋ฅด๋ฉด ์์น๋ ์ฅ์น์ ๊ด๊ณ์์ด CSS preload์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ์ ๊ธ ํด์ ํ๊ณ ์ฒญ์ค์๊ฒ ์ฐ์ํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.